带你使用opencv+dnn+yolov3识别物体 您所在的位置:网站首页 yolov3 tiny opencv 带你使用opencv+dnn+yolov3识别物体

带你使用opencv+dnn+yolov3识别物体

2023-12-30 23:59| 来源: 网络整理| 查看: 265

该文为转载文章,原文出处https://blog.csdn.net/qq21497936/article/details/109201809

 

前言

  级联分类器的效果并不是很好,准确度相对深度学习较低,上一章节使用了dnn中的tensorflow,本章使用yolov3模型,识别出具体的分类。

 

Demo

  320x320,置信度0.6在这里插入图片描述   608x608,置信度0.6(.cfg里面是608)在这里插入图片描述

 

yolov3模型下载

在这里插入图片描述

coco.names:模型具体的分类信息。https://github.com/pjreddie/darknet/blob/master/data/coco.namesyolov3.weights:权重文件https://pjreddie.com/media/files/yolov3.weightsyolov3.cfg:配置文件https://github.com/pjreddie/darknet/blob/master/cfg/yolov3.cfg   以上若是下载不下来,提供其他下载地址,因为github非常慢。

 

OpenCV深度识别基本流程

  opencv3.4.x支持了各种模型。

支持的模型

  opencv3.4.x支持一下深度学习的模型:- caffe:.caffemodel   官网:http://caffe.berkeleyvision.org- tensorflow:.pb   官网:https://www.tensorflow.org- torch:.t7 | .net   官网:http://torch.ch- darknet:.weights   官网:https://pjreddie.com/darknet- DLDT:.bin   官网:https://software.intel.com/openvino-toolkit

操作步骤:yolov3

  不同深度学习框架产生的模型,在操作上和数据输出上有一些区别。梳理下opencv使用tensorflow训练好的模型的使用步骤。

步骤一:读取分类文件

  模型文件对应了不同的分类文件,分类文件是以行为标识,所在的行数(0开始),就是最终识别出的分类号的第几个分类。

std::string classesFile = "E:/qtProject/openCVDemo/dnnData/" \ "yolov3/coco.names"; // 读入分类名称,存入缓存 std::ifstream ifs(classesFile); std::vector classes; std::string classLine; while(std::getline(ifs, classLine)) { classes.push_back(classLine); } 步骤二:加载模型和配置文件,建立神经网络。

  根据不同的模型,使用cv::dnn::readNetFromXXX系列函数进行读取,opencv3.4.x系列支持的dnn模型(支持模型往上看)。   yolov3模型如下:

std::string modelWeights = "E:/qtProject/openCVDemo/dnnData/" \ "yolov3/yolov3.weights"; std::string modelCfg = "E:/qtProject/openCVDemo/dnnData/" \ "yolov3/yolov3.cfg"; // 加载yolov3模型 cv::dnn::Net net = cv::dnn::readNetFromDarknet(modelCfg, modelWeights); if(net.empty()) { qDebug()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有